import axios from './index'

/**
 * 获取商品类型列表
 */
export function getTypes() {
  return axios.request({
    url: '/api/product/types'
  })
}

/**
 * 创建商品类型
 * @param {object} type 类型实体
 */
export function createType(type) {
  return axios.request({
    url: '/api/product/type',
    method: 'post',
    data: type
  })
}

/**
 * 更新商品类型
 * @param {object} type 类型实体
 */
export function updateType(type) {
  return axios.request({
    url: '/api/product/type',
    method: 'put',
    data: type
  })
}

/**
 * 删除商品类型
 * @param {integer} id 商品类型id
 */
export function deleteType(id) {
  return axios.request({
    url: `/api/product/type/${id}`,
    method: 'delete'
  })
}

/**
 * 生成商品类型
 * @param {Array}} types 类型列表
 */
export function generateType(types) {
  return axios.request({
    url: '/api/product/generateType',
    data: types,
    method: 'post'
  })
}

/**
 * 获取商品列表
 * @param {number} id 商品类型id
 * @param {number} catStatus 商品状态（上架/下架）
 * @param {string} key 搜索关键字
 * @param {object} paging 分页信息
 */
export function getProducts(id, catStatus, key, paging) {
  return axios.request({
    url: `/api/product/${id}`,
    params: {...paging, status: catStatus, key},
    method: 'get'
  })
}

/**
 * 获取商品类型下商品的最大排序码
 * @param {number} id 商品类型id
 */
export function getMaxSort(id) {
  return axios.request({
    url: `/api/product/sort/${id}`,
    method: 'get'
  })
}

/**
 * 创建商品
 * @param {object} product 商品实体
 */
export function createProduct(product) {
  return axios.request({
    url: '/api/product',
    data: product,
    method: 'post'
  })
}

/**
 * 创建商品
 * @param {object} product 商品实体
 */
export function updateProduct(product) {
  return axios.request({
    url: '/api/product',
    data: product,
    method: 'put'
  })
}

/**
 * 商品上架
 * @param {number} id 商品id
 */
export function up(id) {
  return axios.request({
    url: `/api/product/up/${id}`,
    method: 'put'
  })
}

/**
 * 商品下架
 * @param {number} id 商品id
 */
export function down(id) {
  return axios.request({
    url: `/api/product/down/${id}`,
    method: 'put'
  })
}

/**
 * 删除商品
 * @param {number} id 商品id
 */
export function deleteProduct(id) {
  return axios.request({
    url: `/api/product/${id}`,
    method: 'delete'
  })
}

/**
 * 批量上架
 * @param {Array} ids 商品id数组
 */
export function upBatch(ids) {
  return axios.request({
    url: `/api/product/upBatch`,
    data: ids,
    method: 'put'
  })
}

/**
 * 批量下架
 * @param {Array} ids 商品id数组
 */
export function downBatch(ids) {
  return axios.request({
    url: `/api/product/downBatch`,
    data: ids,
    method: 'put'
  })
}

/**
 * 批量删除
 * @param {Array} ids 商品id数组
 */
export function deleteBatch(ids) {
  return axios.request({
    url: `/api/product/deleteBatch`,
    data: ids,
    method: 'delete'
  })
}


